const cryptoJS = require('crypto-js');
export function zeroNum(num: number){
  return (num + '').length < 2 ? ('0' + num) : num;
}
export const formatTime = (date: Date): string => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return (
    [year, month, day].map(formatNumber).join('/') +
    ' ' +
    [hour, minute, second].map(formatNumber).join(':')
  )
}

export const formatNumber = (n: number): string => {
  const s = n.toString()
  return s[1] ? s : '0' + s
}
export function formatTimeToDateStr(time: number) {
  try {
    const date = new Date(time);
    return date.getFullYear() + '-' + zeroNum(Number(date.getMonth() + 1)) +  '-' + zeroNum(date.getDate());
  } catch(e) {
    return ''
  }
}
export const uuid = (len: number, radix?: number, newCharts?: string): string => {
  let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  if (newCharts) {
    chars = newCharts.split('')
  }
  const uuid = []; let
      i;
  radix = radix || chars.length;
  if (len) {
    // Compact form
    // eslint-disable-next-line no-bitwise
    for (i = 0; i < len; i += 1) {
      // eslint-disable-next-line no-bitwise
      // @ts-ignore
      uuid[i] = chars[0 | Math.random() * radix];
    }
  } else {
    // rfc4122, version 4 form
    let r;
    // rfc4122 requires these characters
    // eslint-disable-next-line no-multi-assign
    // @ts-ignore
    uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
    // @ts-ignore
    uuid[14] = '4';
    // Fill in random data.  At i==19 set the high bits of clock sequence as
    // per rfc4122, sec. 4.1.5
    for (i = 0; i < 36; i += 1) {
      if (!uuid[i]) {
        // eslint-disable-next-line no-bitwise
        r = 0 | Math.random() * 16;
        // eslint-disable-next-line eqeqeq,no-bitwise
        // @ts-ignore
        uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
      }
    }
  }
  return uuid.join('');
}
export const createDialogueId = (str: string, len: number) => {
  // 计算 SHA256 哈希
  const hash = cryptoJS.SHA256(str).toString(cryptoJS.enc.Hex);
  // 截取指定长度
  return hash.substring(0, len);
}
